package miniBanco.Gui;

import java.util.ArrayList;
import miniBanco.Core.Moneda;
import miniBanco.Core.TipoCuenta;
import miniBanco.Dto.CuentaDTO;
import miniBanco.Exceptions.HandledException;
import MySwing.JAbm;

import MySwing.JFormComponent;
import MySwing.JFormField;
import MySwing.JFormNumberField;
import basics.DBManager;



public class CuentasForm extends JAbm {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private JFormNumberField formFieldId;	
	private JFormNumberField formFieldIdCliente;	
	private JFormField formFieldCliente;
	private JFormField formFieldSaldo;
	private JFormNumberField formFieldNumeroCuenta;
	private ComboBoxMoneda comboMoneda;
	private ComboBoxTipoCuenta comboTipoCuenta;
	
	public CuentasForm() 
	{
		init();
	}

	private void init() {
		ArrayList<JFormComponent> elements = new ArrayList<JFormComponent>();

		formFieldId = new JFormNumberField("Id", 0, 0, 999999999, 1);
		formFieldId.getSpinner().setEnabled(false);
		formFieldIdCliente = new JFormNumberField("IdCliente", 0, 0, 999999999, 1);
		formFieldIdCliente.getSpinner().setEnabled(false);
		formFieldSaldo = new JFormField("Saldo", 20,"");
		formFieldSaldo.getTextField().setEnabled(false);		
		formFieldCliente = new JFormField("Cliente",20,"Ingrese Razon social");
		formFieldCliente.getTextField().setEnabled(false);		
		formFieldNumeroCuenta = new JFormNumberField("Cbu", 0, 0, 999999999, 1);
		comboMoneda = new ComboBoxMoneda();
		comboTipoCuenta = new ComboBoxTipoCuenta();
		
		elements.add(formFieldId);		
		elements.add(formFieldIdCliente);
		elements.add(formFieldSaldo);
		elements.add(formFieldCliente);
		elements.add(formFieldNumeroCuenta);
		//elements.add(comboMoneda);
		
		try {
			this.agregoComponentesAlPanel(elements);
			panelFlowLayout.add(comboMoneda.getComboBox());
			panelFlowLayout.add(comboTipoCuenta.getComboBox());
		} catch (Exception ex) {
			DBManager.Error(ex);
			throw new HandledException("Error inesperado al agregar elementos al form. Ver Log");
		}
	}

	
	public CuentaDTO getFormValues() {
		CuentaDTO cuentaDTO = new CuentaDTO();
		cuentaDTO.setId(Integer.parseInt(formFieldId.getSpinner().getValue().toString()));
		cuentaDTO.setIdCliente(Integer.parseInt(formFieldIdCliente.getSpinner().getValue().toString()));
		cuentaDTO.setCbu(Integer.parseInt(formFieldNumeroCuenta.getSpinner().getValue().toString()));
		Moneda moneda = (Moneda) comboMoneda.getComboBox().getSelectedItem();
		TipoCuenta tipoCuenta = (TipoCuenta) comboTipoCuenta.getComboBox().getSelectedItem();
	    cuentaDTO.setMoneda(moneda.getValue());
	    cuentaDTO.setTipoCuenta(tipoCuenta.getValue());
		return cuentaDTO;
	}

	public void setFormValues(CuentaDTO cuentaDTO) {
		formFieldId.getSpinner().setValue(cuentaDTO.getId());
		formFieldIdCliente.getSpinner().setValue(cuentaDTO.getIdCliente());
		float saldo = cuentaDTO.getSaldo();
		
		formFieldSaldo.getTextField().setText(Float.toString(saldo));;
		formFieldCliente.getTextField().setText(cuentaDTO.getCliente());
		formFieldNumeroCuenta.getSpinner().setValue(cuentaDTO.getCbu());
		
		
		comboMoneda.getComboBox().setSelectedItem(Moneda.Dolar);
	}
	

}
